package com.w7vm.menuweb.managerBean;

import java.io.IOException;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpSession;

import org.primefaces.context.RequestContext;
import org.primefaces.event.CellEditEvent;
import org.primefaces.event.FlowEvent;
import org.primefaces.event.RowEditEvent;
import org.primefaces.event.TransferEvent;
import org.primefaces.model.DualListModel;
import org.springframework.security.core.context.SecurityContextHolder;

import com.w7vm.menuweb.entity.CardapioBuffetWeb;
import com.w7vm.menuweb.entity.CardapioEspecialidadeWeb;
import com.w7vm.menuweb.entity.CardapioInfantilWeb;
import com.w7vm.menuweb.entity.CardapioLaCarteWeb;
import com.w7vm.menuweb.entity.CardapioSelfServiceWeb;
import com.w7vm.menuweb.entity.ContratoCreditoPagamentoWeb;
import com.w7vm.menuweb.entity.ContratoPagamentoWeb;
import com.w7vm.menuweb.entity.ContratoRestaurantesWeb;
import com.w7vm.menuweb.entity.ContratoWeb;
import com.w7vm.menuweb.entity.DescontoPagamentoSy;
import com.w7vm.menuweb.entity.FormaPagamentoSy;
import com.w7vm.menuweb.entity.PlanoSy;
import com.w7vm.menuweb.entity.RestauranteFilialWeb;
import com.w7vm.menuweb.entity.RestauranteSedeWeb;
import com.w7vm.menuweb.facade.CardapioG1Facade;
import com.w7vm.menuweb.facade.CardapioG2Facade;
import com.w7vm.menuweb.facade.CardapioG3Facade;
import com.w7vm.menuweb.facade.ContratoFacade;
import com.w7vm.menuweb.facade.PlanoFacade;
import com.w7vm.menuweb.facade.RestauranteFilialFacade;
import com.w7vm.menuweb.facade.RestauranteSedeFacade;
import com.w7vm.menuweb.service.ContratoService;
import com.w7vm.menuweb.to.ParcelaPagamentoTO;
import com.w7vm.menuweb.utility.Constantes;
import com.w7vm.menuweb.utility.DataUtils;
import com.w7vm.menuweb.utility.PropertiesLoaderImpl;
import com.w7vm.menuweb.vo.CardapioVO;
import com.w7vm.menuweb.vo.ContratoVO;
import com.w7vm.menuweb.vo.FormaPagamentoVO;
import com.w7vm.menuweb.vo.PlanoVO;
import com.w7vm.menuweb.vo.RestauranteVO;

@ManagedBean
@ViewScoped
public class ContratoMB{
	
	@EJB
	private ContratoFacade contratoEJB;
	private ContratoWeb contratoObj;
	
	@EJB
	private CardapioG1Facade cardapioG1EJB;
	@EJB
	private CardapioG2Facade cardapioG2EJB;
	@EJB
	private CardapioG3Facade cardapioG3EJB;
	@EJB
	private RestauranteSedeFacade sedeEJB;
	
	@EJB
	private RestauranteFilialFacade filialEJB;

	@EJB 
	private RestauranteFilialFacade restFilial;
	
	private ContratoPagamentoWeb selectContratoPagamento = new ContratoPagamentoWeb();
	private ContratoCreditoPagamentoWeb contratoPgmt = new ContratoCreditoPagamentoWeb();
	
	private PlanoSy planoObj;
	private PlanoVO planoVO;
	private PlanoVO selectPlanoVO;

	ContratoService contratoService = new ContratoService();
	
	public Constantes constObj = new Constantes();

	private LoginMB loginOjb = new LoginMB();
	private String statusFilialPlano;
	private String msgUpDownGradePlano;
	private String downUpGrade;
	private RestauranteVO restauranteSelect = new RestauranteVO();
	private int idRestauranteTeste;
	
	
	private boolean statusEditar = true;
	private boolean statusBtnAlterar = false;


	// ContratoBEAN
	private String msgPlanoVencendo;

	private int numeroSegurancaCartao;

	private List<ContratoWeb> contratoL = new ArrayList<ContratoWeb>();
	private List<RestauranteVO> restaurantesContratoL = new ArrayList<RestauranteVO>();
	private List<ContratoPagamentoWeb> pagamentoContratoL = new ArrayList<ContratoPagamentoWeb>();

	private List<CardapioVO> cardapioAtivoRestL = new ArrayList<CardapioVO>();
	

	private List<Integer> pagamentoContratoOriginalL = new ArrayList<Integer>();
	private List<Integer> restauranteContratoOriginalL = new ArrayList<Integer>();
	private List<ContratoCreditoPagamentoWeb> contratoCreditoPagamentoL = new ArrayList<ContratoCreditoPagamentoWeb>();

	private RestauranteVO restaurantesContratoSelect;

	private Set<ContratoRestaurantesWeb> contRestFilialL = new HashSet<ContratoRestaurantesWeb>() ;
	private Set<ContratoPagamentoWeb> pgmContratoRestauranteL = new HashSet<ContratoPagamentoWeb>() ;
	
	

	private List<ParcelaPagamentoTO> listaParcelaPagamentoL = new ArrayList<ParcelaPagamentoTO>();
	private ParcelaPagamentoTO parcelaPagSelect = new ParcelaPagamentoTO(); 

	private boolean statusRenovacaoDialog = false;
	private boolean skip;
	private boolean statusCartaoCredito = true;
	private boolean statusBoleto = true;
	private boolean statusItau = true;
	private boolean statusPayPal = true;
	private boolean statusErroCampoVazio = false;
	
	private boolean statusRenovacaoOK = true;
	private boolean statusRenovacaoError = true;
	private boolean statusError = false;
	
	private boolean downFilial = false;
	private boolean downCardapio = false;
	private boolean downFilialCard = false;
	private boolean downgrade = false;
	private boolean upgrade = false;
	

	private boolean statusPagamentoNovoPlano = false;
	private boolean statusPagamentoTrocaPlano = false;
	private boolean statusPagamentoAtrasoPlano = false;
	public boolean statusPagamentoRenovacaoPlano = false;

	public String ATIVOs = "ATIVO";
	public String INATIVOs  = "INATIVO";
	
	public String displayDetalhesRestaurante;
	

	private String color = "#D3D3D3";
	//private String[] vetColorPanel = new String[20];

	private ContratoVO contratoVO = null;
	
	// ENTITY - FORMAPAGAMENTO 
	private FormaPagamentoSy selectFormaPagamento = new FormaPagamentoSy();

	// DataTable - Selecionado grid 
	private FormaPagamentoVO formaPagVO = new FormaPagamentoVO();
	// DataTable -  alterado devido a forma pagamento
	private FormaPagamentoVO formaPagDiferenteVO = new FormaPagamentoVO();
	
	// PICKER
	private DualListModel<RestauranteFilialWeb> empresaFiliaisL = new DualListModel<RestauranteFilialWeb>();
	private List<RestauranteFilialWeb> restFilialSource = new ArrayList<RestauranteFilialWeb>();
	private List<RestauranteFilialWeb> restFilialTarget = new ArrayList<RestauranteFilialWeb>();
	
	@ManagedProperty("#{cardapiosConsultaMB}")
	private CardapiosConsultaMB cardapiosConsultaMB;
	
	@ManagedProperty("#{restauranteFilialMB}")
	private RestauranteFilialMB restauranteFilialMB;
	
	private LoginMB loginObj = new LoginMB();

	private String cartaoCredito;
	private String cartaoCreditoImg;
	
	private String boleto;
	
	private int mes;
	private int ano;

	private int numeroParcelaPagamento;
	
	private String totalPagamentoFormatado;
	private String valorPlanoFormatado;
	private String descontoFormatadoRenovacao;
	private String descontoFormatadoTrocaPlano;

	private long desconto;
	
	
	
	
	public ContratoMB() {
		System.out.println("[METHOD][CONSTRUTOR]");
		 try {
		      Context ctx = new InitialContext();
		      contratoEJB = (ContratoFacade) ctx.lookup("java:global/MenuWeb/MenuWeb-EJB/ContratoEJB");
		  } catch (NamingException e) {
		      throw new EJBException(e);
		  }
		
		if(loginOjb.getSessao("IDRestaurante") != null){
			loadDadosContrato();	
		}
		
//		if(loginOjb.getSessao("origemAcesso") != null)
//			if(loginOjb.getSessao("origemAcesso").equals("portalCardapioMB")){
//				RequestContext context = RequestContext.getCurrentInstance();
//				context.execute("PF('dlgDefinePlano').show();");
//			}				
	}
	

	public void renovacaoPlanoVencido() {
		System.out.println("[METHOD][renovacaoPlanoVencido()]");
		RequestContext context = RequestContext.getCurrentInstance();
		context.execute("PF('dlgDadosContratoRenovacao').show();");
	}
	
	
	
	/*
	 * ================================== METHOD SAVE RENOVACAO================================================ -
	 * - ENTITY :: CONTRATOWEB | CONTRATORESTWEB | PAGAMENTOHISTORICOWEB | 
	 * - FACADE :: 
	 * ==========================================================================================================
	 */
	 public void alterarContrato(){
		 System.out.println("[METHOD][alterarContrato()]");
	 }

	
	/*
	 * ================================== METHOD PREPARA PAGAMENTO================================================ -
	 * - ENTITY :: FormaPagamentoSy
	 * - FACADE :: ContratoFacade
	 * ==========================================================================================================
	 */

	public void controleOperacaoPagamento() {
		System.out.println("[Method][controlePagamentoPlano]");
		
		if(statusPagamentoAtrasoPlano == true){
			try {
				efetuaPagamentoParcelaEmAtraso();
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		else if(statusPagamentoNovoPlano == true){
			try{
				efetuaPagamentoNovoPlano();
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		
		if(statusPagamentoRenovacaoPlano == true){
			System.out.println("[METHOD][controleOperacaoPagamento] statusPagamentoRenovacaoPlano "+ statusPagamentoRenovacaoPlano);
				
			if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_VISA) ||
					(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_DINNER)) ||
					(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_MASTER))){
					if(validaDadosPagamentoRenovacao() == false){
						efetuaPagamentoRenovacao();
					}
			}
		}
	}

	/*
	 * ================================== METHOD LOAD DESCONTO ================================================ -
	 * - ENTITY :: ContratoWeb
	 * - FACADE :: ContratoFacade
	 * ==========================================================================================================
	 */
	
	public long loadDescontoPlano(){
		System.out.println("loadDescontoPlano...");
		List<DescontoPagamentoSy> descontoL = null;
		long resultDesconto = 0;
		DataUtils dataNow = new DataUtils();
		ContratoCreditoPagamentoWeb creditoObj = new ContratoCreditoPagamentoWeb();

		
		System.out.println("loadDescontoPlano statusPagamentoAtrasoPlano..."+ statusPagamentoAtrasoPlano);
		System.out.println("loadDescontoPlano  statusPagamentoNovoPlano ..."+ statusPagamentoNovoPlano);


		// DESCONTO CENÁRIO ==> RENOVAÇÃO (incluir 2 tipo de desconto Credito | DescontoPlano)
		if(statusPagamentoRenovacaoPlano == true){

			// 1.RG :: Verifica Desconto Plano => DescontoPagamentoSys
			descontoL = contratoEJB.preparaListaDesconto(constObj.DESCONTO_RENOVACAO);
			int qtdeAcessoFilial = Integer.parseInt(loginOjb.getSessao("QdteRestauranteFilial").toString());
			System.out.println("loadDescontoPlano qtdeAcessoFilial "+ qtdeAcessoFilial);
			resultDesconto = contratoEJB.defineRegraDesconto(descontoL, qtdeAcessoFilial);

			
			// 2.RG :: Verifica Desconto Credito => ContratoCreditoPagamentoWeb
			if(contratoCreditoPagamentoL.size() > 0){
				 for(ContratoCreditoPagamentoWeb contPagObj : contratoCreditoPagamentoL){
					 if(contPagObj.getStatus() == 1){
						 long resultDescontoI = (long) contPagObj.getValorCredito();
						 resultDesconto = resultDesconto + resultDescontoI;
					 }
				 }
			}
			return resultDesconto;
		}
		
		// DESCONTO CENÁRIO ==> TROCA PLANO (inclui 1 tipo de desconto Crédito considerando downgrade = descontoPagamentoSys + dias_pag_avista | upgrade = dias_pag_avista)
		else if(statusPagamentoTrocaPlano == true){
			System.out.println("DESCONTO - CENÁRIO TROCA PLANO..................................");

			// 1.RG :: Pagamento do plano for a vista 
			if(pgmContratoRestauranteL.size() == 1){
				
				Date dtAtual = null;
				try {
					dtAtual = DataUtils.getPegaDataAtual();
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				if(dtAtual.before(contratoVO.getDataTermino())){
	
					System.out.println("Data Atual Menor DataTermino COntrato..................................");
	
					// CALCULO DIFERENCA DE DIAS 
					Calendar dataTermino = Calendar.getInstance();		
					dataTermino.setTime(contratoVO.getDataTermino());
					int diasDiferenca = DataUtils.diferencaEmDias(dataTermino);
					System.out.println("diasDiferenca.................................."+ diasDiferenca);
	
					// CALCULO VALOR POR DIA
					int diasMes = planoVO.getBenPeriodoAssinatura() * 30;
					double valorPlanoDia = 	planoVO.getValor() / diasMes;
					System.out.println("planoVO.getValor().................................."+ planoVO.getValor());
	
					System.out.println("diasMes.................................."+ diasMes);
	
					System.out.println("valorPlanoDia.................................."+ valorPlanoDia);
					
					double valorDesconto = valorPlanoDia * diasDiferenca;  
					System.out.println("valorDesconto.................................."+ valorDesconto);
					long resultDescontoI = (long) valorDesconto;
					resultDesconto = resultDesconto + resultDescontoI;
				}
				else if(dtAtual.compareTo(contratoVO.getDataTermino()) == 0){
					resultDesconto = 0;
				}
			}
			else{
				resultDesconto = 0;
			}

			// 2.RG - Troca Plano downgrade busca desconto 
			if(downUpGrade == "+"){
				descontoL = contratoEJB.preparaListaDesconto(constObj.DESCONTO_TROCAPLANO);
				int qtdeAcessoFilial = Integer.parseInt(loginOjb.getSessao("QdteRestauranteFilial").toString());
				System.out.println("loadDescontoPlano qtdeAcessoFilial "+ qtdeAcessoFilial);
				long resultDescontoI = contratoEJB.defineRegraDesconto(descontoL, qtdeAcessoFilial);
				resultDesconto = resultDesconto + resultDescontoI;
			}
		}
		return resultDesconto;
 	}
	
	
		
	/*
	 * ================================== METHOD SALVAR ALTERAÇÃO PLANO================================================ -
	 * - ENTITY :: ContratoMB
	 * - 
	 * ==========================================================================================================
	 */
		public void salvaAlteracaoPlano() {
			System.out.println("[METHOD][salvaAlteracaoPlano]");
			
			
		}
		

		
		
		
	/*
	 * ================================== METHOD LOAD PARCELA PAGAMENTO================================================ -
	 * - ENTITY :: ParcelaPagamentoService
	 * - 
	 * ==========================================================================================================
	 */
	
	public List<ParcelaPagamentoTO> getListaParcelaPagamentoL() {
		System.out.println("[METHOD][getParcelamentoPagamentoL]..........................................");
		ParcelaPagamentoTO parcelaPagObject = new ParcelaPagamentoTO();
		ContratoService contratoService = new ContratoService();
		listaParcelaPagamentoL = new ArrayList<ParcelaPagamentoTO>();
		double valorPlanoDesconto = 0;
		
		if (selectPlanoVO != null){
				int qtdeParcelas = selectPlanoVO.getBenPeriodoAssinatura();
				System.out.println("[METHOD][getParcelamentoPagamentoL] qtdeParcelas  ...................................."+ qtdeParcelas);
						
				for(int parcela = 1; parcela <= qtdeParcelas; parcela++){
					System.out.println("[METHOD][getParcelamentoPagamentoL]   iteracao "+ parcela);
					parcelaPagObject = new ParcelaPagamentoTO();
					
					if(statusPagamentoRenovacaoPlano == true){
						valorPlanoDesconto = contratoService.calculaValorTotalRenovacao(selectPlanoVO.getValor(), desconto) / parcela;
					}
					else if(statusPagamentoNovoPlano == true){
						valorPlanoDesconto = contratoService.calculaValorTotalTrocaPlano(selectPlanoVO.getValor(), desconto, parcela);
						System.out.println("[METHOD][getParcelamentoPagamentoL]   statusPagamentoNovoPlano "+ valorPlanoDesconto);
					}

					String valorPlanoDescontoS = contratoService.converterDoubleString(valorPlanoDesconto);
					System.out.println("[METHOD][getParcelamentoPagamentoL]   valorPlanoDesconto "+ valorPlanoDescontoS);
			
					String formaPagText =  Integer.toString(parcela) + "X De R$ "+ valorPlanoDescontoS;
					System.out.println("[METHOD][getParcelamentoPagamentoL]   FormaPagamento-Formatado "+ formaPagText);

					parcelaPagObject.setNumeroParcela(parcela);
					parcelaPagObject.setTextoParcela(formaPagText);
					parcelaPagObject.setValorParcela(valorPlanoDesconto);
					listaParcelaPagamentoL.add(parcelaPagObject);
					System.out.println("[METHOD][getParcelamentoPagamentoL]   listaParcelaPagamentoL  "+ listaParcelaPagamentoL.size());
				}
		}
		return listaParcelaPagamentoL;
	}


	public void setListaParcelaPagamentoL(List<ParcelaPagamentoTO> listaParcelaPagamentoL) {
		this.listaParcelaPagamentoL = listaParcelaPagamentoL;
	}
	
	/*
	 * ================================== METHOD LOAD CONTATO================================================ -
	 * - ENTITY :: ContratoWeb
	 * - FACADE :: ContratoFacade
	 * ==========================================================================================================
	 */

	
	public String defineRegraRenovacaoContrato() {
		System.out.println("[METHOD][defineRegraRenovacaoContrato]");
		int diaVencimento = 0;
		
		if(contratoL.size() == 0){
			loadDadosContrato();
		}
		if(contratoVO.getDataTermino() != null){
			// Valida Regras de Negocio
			diaVencimento = contratoEJB.calculaQuantidadeDiasContratoVencimento(contratoVO.getDataTermino());
			loginOjb.gravarSessao("contratoExpirandoDias", diaVencimento);
		}

		System.out.println("[METHOD][defineRegraRenovacaoContrato]..............................................."+ diaVencimento);
		return contratoEJB.defineRegraRenovacao(diaVencimento);
	}

	
	/*
	* ================================== OPERAÇÕES CORE MANAGER BEAN =========================================
	* 
	* - OPERATION :: CRIAR_CONTRATO| RENOVACAO_CONTRATO | EDITAR_CONTRATO | ALTERARPLANO_CONTRATO   
	*  
	* ==========================================================================================================================
	*/

	
	/*
	* ================================== OPERACAO CORE : ALTERARPLANO_CONTRATO ========================================= 
	* - ENTITY :: CONTRATOWEB -
	* - FACADE :: CONTRATOFACADE
	* ==========================================================================================================================
	*/
	
	public void alteraPlanoContrato(){
		System.out.println("[METHOD][alteraPlanoContrato]");
		
		if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_VISA) ||
				(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_DINNER)) ||
						(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_MASTER))){
			if(validaDadosPagamentoRenovacao() == false){
				
				System.out.println("ID CONTRATO.............."+ contratoVO.getIdContratoWeb());
				
				//contratoEJB.alteraPlanoContrato(contratoEntity);
			}
		}
	}
	
	/*
	 * ================================== OPERACAO CORE : RENOVACAO_CONTRATO================================================ -
	 * - ENTITY :: CONTRATOWEB | CONTRATORESTWEB | PAGAMENTOHISTORICOWEB | 
	 * - FACADE :: 
	 * ==========================================================================================================
	 */
 
	 
	 public void efetuaPagamentoRenovacao(){
		 System.out.println("[METHOD][salvaRenovacao()]");
		 int resultRenovacao = 0;
		 Set<ContratoRestaurantesWeb> contratoRestL = new HashSet<ContratoRestaurantesWeb>();
		 List<RestauranteFilialWeb> filialSourceL = new ArrayList<RestauranteFilialWeb>();
		 Set<ContratoPagamentoWeb> contratoPagL = new HashSet<ContratoPagamentoWeb>();
		 
		 ContratoWeb contratoEntity = new ContratoWeb();
		 ContratoRestaurantesWeb contratoRestEntity = null;
		 ContratoPagamentoWeb contratoPagamentoEntity = null;
		 PlanoSy planoEntity = new PlanoSy(); 

		 RestauranteSedeWeb restauranteSedeEntity = new RestauranteSedeWeb();
		 RestauranteFilialWeb restauranteFilialEntity = new RestauranteFilialWeb();
		 DataUtils dataUt = new DataUtils();
		 
		 // CONTRATO WEB
		 int idContratoOld = contratoVO.getIdContratoWeb();
		 contratoEntity.setNumeroContrato(contratoVO.getNumeroContrato());
		 contratoEntity.setNomeResponsavel(contratoVO.getNomeResponsavel());

		 try {
			Date dataTerminoContrato = dataUt.adicionaMesesDataAtual(numeroParcelaPagamento);
			contratoEntity.setDataContratacao(dataUt.getPegaDataAtual());
			contratoEntity.setDataInc(dataUt.getPegaDataAtual());
			contratoEntity.setDataTermino(dataTerminoContrato);
		} catch (ParseException e1) {
			e1.printStackTrace();
		}
		 contratoEntity.setCnpj(contratoVO.getCNPJ());
		 contratoEntity.setCpf(contratoVO.getCpf());
		 contratoEntity.setInsEstadual(contratoVO.getInsEstadual());
		 contratoEntity.setContratoEmNome(contratoVO.getContratoEmNome());
		 contratoEntity.setStatus(constObj.CONTRATO_PLANO_AGUARDANDO_PG);
		 planoEntity.setIdPlanoSys(selectPlanoVO.getIdPlanoSys());
		 contratoEntity.setPlanoSy(planoEntity);

		 // CONTRATO RESTAURANTEWEB
		 int idRestauranteSedeWeb = (Integer) loginOjb.getSessao("IDRestaurante");
		 restauranteSedeEntity.setIdRestauranteSedeWeb(idRestauranteSedeWeb);

		 // SET CONTRATO RESTAURANTE FILIAL
		 for(RestauranteFilialWeb restObj : getRestFilialTarget()){
			 contratoRestEntity = new ContratoRestaurantesWeb();
			 restauranteFilialEntity = new RestauranteFilialWeb();
			 restauranteFilialEntity.setIdRestauranteFilialWeb(restObj.getIdRestauranteFilialWeb());
			 //restauranteFilialEntity.setRestauranteSedeWeb(restauranteSedeEntity);
			 contratoRestEntity.setRestauranteSedeWeb(restauranteSedeEntity);
			 System.out.println("6 "+ restauranteSedeEntity.getIdRestauranteSedeWeb());
			 contratoRestEntity.setStatus(constObj.CONTRATO_PAGAMENTO_AGUARDA_PG);
			 contratoRestEntity.setContratoWeb(contratoEntity);
			 contratoRestEntity.setRestauranteFilialWeb(restauranteFilialEntity);
			 contratoRestL.add(contratoRestEntity);
		 }
		 
		 
		 // CONTRATO PAGAMENTOWEB
		 //   TIPO PAG : CARTÃO CRÉDITO

		 
		if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_VISA) ||
				(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_DINNER)) ||
						(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_MASTER))){
			
			for(int i=1; i <= numeroParcelaPagamento; i++){
				contratoPagamentoEntity = new ContratoPagamentoWeb();

				contratoPagamentoEntity.setFormaPagamentoSy(selectFormaPagamento);
				contratoPagamentoEntity.setContratoWeb(contratoEntity);
				contratoPagamentoEntity.setCodeTransacao(formaPagVO.getCodeTransacao());
				contratoPagamentoEntity.setTitularPagamento(formaPagVO.getTitulaPagamento());
				contratoPagamentoEntity.setParcela(i);
				
				try {
					contratoPagamentoEntity.setDataInc(dataUt.getPegaDataAtual());
				} catch (ParseException e) {
					e.printStackTrace();
				}
				Date dataPagamento = dataUt.adicionaMesesDataAtual(i);
				contratoPagamentoEntity.setDataVencimento(dataPagamento);
				contratoPagamentoEntity.setValorPlano(selectPlanoVO.getValor());
				double valorPlanoDesconto = contratoService.calculaValorTotalRenovacao(selectPlanoVO.getValor(), desconto) / numeroParcelaPagamento;
				contratoPagamentoEntity.setValorPagamento(valorPlanoDesconto);
				contratoPagamentoEntity.setStatus(constObj.CONTRATO_PAGAMENTO_AGUARDA_PG);
				contratoPagL.add(contratoPagamentoEntity);
			}
		}
		System.out.println("[LIST...................................................................................."+ contratoRestL.size());

		//contratoRestEntity.setContratoWeb(contratoEntity);
		contratoEntity.setContratoRestaurantesWebs(contratoRestL);
		contratoEntity.setContratoPagamentoWebs(contratoPagL);

		//RN001 - Atualiza status das empresa filiais conforme a renovação do contrato
	
		filialSourceL = getRestFilialSource();
		System.out.println("***************************************** TAMANHO LIST REMOVE_ALL 1 "+ filialSourceL.size());
		filialSourceL.removeAll(getRestFilialTarget());
		System.out.println("***************************************** TAMANHO LIST REMOVE_ALL 2 "+ filialSourceL.size());
	
		
		try{

			if(pagamentoContratoOriginalL.size() > 0 && restauranteContratoOriginalL.size() > 0){

				int resultDeletePagamento = contratoEJB.excluiPagamentosContrato(pagamentoContratoOriginalL);
				int resultDeleteRestaurante = contratoEJB.excluiRestaurantesContrato(restauranteContratoOriginalL);
			
				System.out.println("RESULTADO DELETE pagamentoContratoOriginalL   "+ resultDeletePagamento);
				System.out.println("RESULTADO DELETE restauranteContratoOriginalL   "+ resultDeleteRestaurante);

				
				
				if(resultDeletePagamento != -1 && resultDeleteRestaurante != -1){
				
					resultRenovacao = contratoEJB.persisteContratoNovo(contratoEntity, idContratoOld);
					
					if(resultRenovacao != -1){
						restFilial.alteraStatusRestaurantesFilial(filialSourceL, constObj.INATIVO);
						RequestContext context = RequestContext.getCurrentInstance();
						context.execute("PF('dlgMsgInformativoRenovacaoOK').show();");
					}
					else if(resultRenovacao == -1){
						RequestContext context = RequestContext.getCurrentInstance();
						context.execute("PF('dlgMsgInformativoRenovacaoError').show();");
					}
				}
			}
			else{
				RequestContext context = RequestContext.getCurrentInstance();
				context.execute("PF('dlgMsgInformativoRenovacaoError').show();");
			}
		}catch (Exception e) {
			RequestContext context = RequestContext.getCurrentInstance();
			context.execute("PF('dlgMsgInformativoRenovacaoError').show();");
		}
	 }
	 
		/*
		 * ================================== METHOD UPDATE CONTRATO_PAGAMENTO================================================ -
		 * - ENTITY :: CONTRATOPAGAMENTOWEB 
		 * - FACADE :: 
		 * ==========================================================================================================
		 */

		 public void efetuaPagamentoNovoPlano() throws ParseException{
			System.out.println("[METHOD][efetuaPagamentoNovoPlano()]");
			
			RequestContext contextRequest1 = RequestContext.getCurrentInstance();
			FacesContext contextFaces1 =  FacesContext.getCurrentInstance(); 

			
			String msg, header;
			int result;
			DataUtils dataNow = new DataUtils();
			
//			numeroParcelaPagamento = formaPagDiferenteVO.getParcela();
	//
//			if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_VISA) ||
//					(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_DINNER)) ||
//							(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_MASTER))){
//				if(validaDadosPagamentoRenovacao() == false){
//					
//					formaPagVO.setDataPagamento(dataNow.getPegaDataAtual());
//					
//					result = contratoEJB.efetuaPagamentoAtraso(formaPagVO.getIdContratoPagamentoWeb(), selectFormaPagamento.getIdFormaPagamentoSys(),formaPagVO.getCodeTransacao(),
//							formaPagVO.getTitulaPagamento(), formaPagVO.getDataPagamento(), constObj.CONTRATO_PAGAMENTO_AGUARDA_PG);
	//
//					System.out.println("RESULT TESTEEEEEEEEEEEEE UPDATE "+ result);
//					if(result != -1 && result != 0){
//						contextRequest1.execute("PF('dlgFormaPagRenovacao').hide();");
//						header = PropertiesLoaderImpl.getValor("headPagamentoParcela");
//						msg = PropertiesLoaderImpl.getValor("msgPagamentoParcelaSuccess");
//						contextFaces1.addMessage("msg", new FacesMessage(FacesMessage.SEVERITY_INFO,header, msg));
//					 }
//					else if(result == -1 || result == 0){
//						// ERROR
//						contextRequest1.execute("PF('dlgFormaPagRenovacao').hide();");
//						header = PropertiesLoaderImpl.getValor("headPagamentoParcela");
//						msg = PropertiesLoaderImpl.getValor("msgPagamentoParcelaErro");
//						FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
//						RequestContext.getCurrentInstance().showMessageInDialog(message);
//					 }
//				}
//			}
		 }
		 

		 public void efetuaPagamentoParcelaEmAtraso() throws ParseException{
			System.out.println("[METHOD][efetuaPagamentoParcelaEmAtraso()]");
			
			RequestContext contextRequest1 = RequestContext.getCurrentInstance();
			FacesContext contextFaces1 =  FacesContext.getCurrentInstance(); 

			
			String msg, header;
			int result;
			DataUtils dataNow = new DataUtils();
			
			numeroParcelaPagamento = selectContratoPagamento.getParcela();

			if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_VISA) ||
					(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_DINNER)) ||
							(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_MASTER))){
				if(validaDadosPagamentoRenovacao() == false){
					FormaPagamentoSy formaPagmentoObj = new FormaPagamentoSy();
					formaPagmentoObj.setIdFormaPagamentoSys(selectFormaPagamento.getIdFormaPagamentoSys());
					
					selectContratoPagamento.setDataPagamento(dataNow.getPegaDataAtual());
					selectContratoPagamento.setDataAlt(dataNow.getPegaDataAtual());
					selectContratoPagamento.setFormaPagamentoSy(formaPagmentoObj);
					
					System.out.println("TESTE "+ selectContratoPagamento.getIdContratoPagamentoWeb());
					System.out.println("TESTE "+ selectContratoPagamento.getContratoWeb().getIdContratoWeb());
					System.out.println("TESTE "+ selectContratoPagamento.getFormaPagamentoSy().getIdFormaPagamentoSys());
					System.out.println("TESTE "+ selectContratoPagamento.getTitularPagamento());
					System.out.println("TESTE "+ selectContratoPagamento.getParcela());
					System.out.println("TESTE "+ selectContratoPagamento.getCodeTransacao());
					System.out.println("TESTE "+ selectContratoPagamento.getDataVencimento());
					System.out.println("TESTE "+ selectContratoPagamento.getDesconto());
					System.out.println("TESTE "+ selectContratoPagamento.getValorPlano());
					System.out.println("TESTE "+ selectContratoPagamento.getValorPagamento());
					System.out.println("TESTE "+ selectContratoPagamento.getStatus());
					System.out.println("TESTE "+ selectContratoPagamento.getDataInc());
					System.out.println("TESTE "+ selectContratoPagamento.getDataVencimento());
					System.out.println("TESTE "+ selectContratoPagamento.getDataAlt());
					
					
					result = contratoEJB.efetuaPagamentoAtraso(selectContratoPagamento);

					System.out.println("RESULT TESTEEEEEEEEEEEEE UPDATE "+ result);
					if(result != -1 && result != 0){
						contextRequest1.execute("PF('dlgPagamentoRenovacao').hide();");
						contextRequest1.execute("PF('dlgFormaPagRenovacao').hide();");
						header = PropertiesLoaderImpl.getValor("headPagamentoParcela");
						msg = PropertiesLoaderImpl.getValor("msgPagamentoParcelaSuccess");
						contextFaces1.addMessage("msg", new FacesMessage(FacesMessage.SEVERITY_INFO,header, msg));
						loadDadosContrato();
					 }
					else if(result == -1 || result == 0){
						// ERROR
						header = PropertiesLoaderImpl.getValor("headPagamentoParcela");
						msg = PropertiesLoaderImpl.getValor("msgPagamentoParcelaErro");
						FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
						RequestContext.getCurrentInstance().showMessageInDialog(message);
					 }
				}
			}
		 }

		 

	/*
	/*
	 * ================================== OPERACAO CORE : ATIVA / DESATIVA RESTAURANTES CONTRATO ================================ 
	 * - ENTITY :: CONTRATOWEB -
	 * - FACADE :: CONTRATOFACADE
	 * ==========================================================================================================================
	 */

	public void statusAtivaRestauranteContrato() {
		System.out.println("[METHO][statusAtivaRestauranteContrato()]");

		RequestContext contextRequest = RequestContext.getCurrentInstance();
		FacesContext contextFaces =  FacesContext.getCurrentInstance(); 

		int updated;
		String msg;
		String header;

		try{
			updated = contratoEJB.ativaDesativaRestauranteContrato(restaurantesContratoSelect.getIdContratoRestaurante(), constObj.ATIVO, restaurantesContratoSelect.getTipo());

			System.out.println("STATUS EXECUÇÃO.................................."+ updated);
			
			if(updated == 1){
				loadDadosContrato();
				contextRequest.execute("PF('contratoRestauranteDialog').hide();");
				header = PropertiesLoaderImpl.getValor("headAtivacaoRestauranteContrato");
				msg = PropertiesLoaderImpl.getValor("msgAtivacaoRestauranteContrato");
				contextFaces.addMessage("msg", new FacesMessage(FacesMessage.SEVERITY_INFO,header, msg));
			}
			else{
				// ERROR
				contextRequest.execute("PF('dlgMsgAtivacao').hide();");
				header = PropertiesLoaderImpl.getValor("headAtivacaoErrorRestauranteContrato");
				msg = PropertiesLoaderImpl.getValor("msgAtivacaoErrorRestauranteContrato");
				FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, header, msg);
				RequestContext.getCurrentInstance().showMessageInDialog(message);
			}
		}catch (Exception e) {
			contextRequest.execute("PF('dlgMsgAtivacao').hide();");
			header = PropertiesLoaderImpl.getValor("headgErrorGeral");
			msg = PropertiesLoaderImpl.getValor("msgErrorGeral");
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
		}

	}
	
	public void statusInativarRestauranteContrato() {
		System.out.println("[METHO][statusDesativaRestauranteContrato()]"+ restaurantesContratoSelect.getIdRestaurante() ) ;

		RequestContext contextRequest = RequestContext.getCurrentInstance();
		FacesContext contextFaces =  FacesContext.getCurrentInstance(); 

		
		int updated;
		String msg;
		String header;

		try{
			updated = contratoEJB.ativaDesativaRestauranteContrato(restaurantesContratoSelect.getIdContratoRestaurante(), constObj.INATIVO, restaurantesContratoSelect.getTipo());
			System.out.println("STATUS EXECUÇÃO.................................."+ updated);
			
			if(updated == 1){
				loadDadosContrato();
				contextRequest.execute("PF('contratoRestauranteDialog').hide();");
				header = PropertiesLoaderImpl.getValor("headInativacaoRestauranteContrato");
				msg = PropertiesLoaderImpl.getValor("msgInativacaoRestauranteContrato");
				contextFaces.addMessage("msg", new FacesMessage(FacesMessage.SEVERITY_INFO,header, msg));
			}
			else{
				// ERROR
				contextRequest.execute("PF('dlgMsgInativacao').hide();");
				header = PropertiesLoaderImpl.getValor("headInativacaoErrorRestauranteContrato");
				msg = PropertiesLoaderImpl.getValor("msgInativacaoErrorRestauranteContrato");
				FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, header, msg);
				RequestContext.getCurrentInstance().showMessageInDialog(message);
			}
		}catch (Exception e) {
			contextRequest.execute("PF('dlgMsgInativacao').hide();");
			header = PropertiesLoaderImpl.getValor("headgErrorGeral");
			msg = PropertiesLoaderImpl.getValor("msgErrorGeral");
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
		}
	}




/*
* ========================================== METHOD VALIDACAO==========================================================================
* =====================================================================================================================================
*/

	public void logout(){
        System.out.println("logout()");
        SecurityContextHolder.getContext().setAuthentication(null);
        invalidateSession();
    }

	private void invalidateSession() {
        FacesContext fc = FacesContext.getCurrentInstance();
        HttpSession s = (HttpSession) fc.getExternalContext().getSession(false);
        s.invalidate();
    }

	public void redirecionaAlteraPlanoContrato() {
		System.out.println("[METHOD][redirecionaAlteraPlanoContrato]");
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("../admin/alteraPlano.jsf");
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	
	public void redirecionaPaginaPortal() {
		System.out.println("[METHOD][redirecionaPaginaPortal]");
		logout();
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("../../public/login.jsf");
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
	public void chamaDialogSelecionaPlano() {
		System.out.println("[METHOD][chamaDialogSelecionaPlano]");
		RequestContext context = RequestContext.getCurrentInstance();
		context.execute("PF('dlgDefinePlano').show();");
	}

	public void fechaDialogMsgInformativo() {
		System.out.println("[METHOD][fechaDialogMsgInformativo]");
		RequestContext context = RequestContext.getCurrentInstance();
		context.execute("PF('dlgMsgInformativo').hide();");
	}

	public boolean validaDadosContratoRenovacao() {
		System.out.println("[METHOD][validaDadosContrato]"+ empresaFiliaisL.getTarget().size());
		boolean resultValida = false;
		String msg;
		String header;

		// VALIDAÇÃO SE ALGUMA FILIAL ESTÁ ASSOCIADA AO PLANO
		if (empresaFiliaisL.getTarget().size() == 0) {
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaRestauranteFilialAssociado");
			msg = PropertiesLoaderImpl.getValor("msgPlanoFilialAssociada");
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		// VALIDAÇÃO DA QTDE REST.FILIAL ASSOCIADA AO PERMITIDO NO PLANO
		if(getRestFilialTarget().size() > selectPlanoVO.getBenQtdeFilial()){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaRestauranteFilialAssociado");
			msg = PropertiesLoaderImpl.getValor("msgPlanoFilialAssociadaExcede");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(contratoVO.getContratoEmNome().equals("") || contratoVO.getContratoEmNome() == null){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosContratoEmNome");
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(contratoVO.getCNPJ().equals("") || contratoVO.getCNPJ() == null){
			resultValida = true;

			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosContratoCNPJ");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(contratoVO.getInsEstadual() == 0){
			resultValida = true;

			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosContratoInsEstadual");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(contratoVO.getNomeResponsavel().equals("") || contratoVO.getNomeResponsavel() == null){
			resultValida = true;

			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosContratoNomeResponsavel");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}

		if(contratoVO.getCpf().equals("") || contratoVO.getCpf() == null){
			resultValida = true;

			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosContratoCPF");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(resultValida == false){
			RequestContext context = RequestContext.getCurrentInstance();
			context.execute("PF('dlgFormaPagRenovacao').show();");
		}
		return resultValida;
	}
	
	

	
	public boolean validaDadosPagamentoRenovacao() {
		System.out.println("[METHOD][validaDadosPagamentoRenovacao]");

		boolean resultValida = false;
		String msg;
		String header;
		
		if(selectContratoPagamento.getTitularPagamento().equals("") || selectContratoPagamento.getTitularPagamento() == null){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosPagamentoNomeTitula");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(selectContratoPagamento.getCodeTransacao().equals("") || selectContratoPagamento.getCodeTransacao() == null){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosPagamentoNumeroCartaoCredito");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}

		if(formaPagVO.getCodSeguranca().equals("") || formaPagVO.getCodSeguranca() == null){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosPagamentoCodSeguranca");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(formaPagVO.getMes() == 0){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosPagamentoMesCartao");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}

		if(formaPagVO.getAno() == 0){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosPagamentoAnoCartao");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		// Parcela PAgamento não selecionado
		if(numeroParcelaPagamento == 0){
			resultValida = true;
			header = PropertiesLoaderImpl.getValor("headPlanoValidaCampoVazio");
			msg = PropertiesLoaderImpl.getValor("msgDadosPagamentoQtdeParcela");
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, header, msg);
			RequestContext.getCurrentInstance().showMessageInDialog(message);
			return resultValida;
		}
		
		if(resultValida == false){
			// Method Chamada Operadora Cartão
		}
		return resultValida;

	}


	public String onFlowProcess(FlowEvent event) {

		System.out.println("[METHOD][onFlowProcess]");

		if (skip) {
			skip = false; // reset in case user goes back
			return "confirm";
		} else {
			return event.getNewStep();
		}
	}

	
	
	public void alteracaoPlano() {
		System.out.println("[METHOD][alteracaoPlano]");
		RequestContext contextResq = RequestContext.getCurrentInstance();
		try {
			contextResq.execute("PF('dlgAlteraPlano').show();");
			FacesContext.getCurrentInstance().getExternalContext().redirect("../../../pages/protected/user/alteracaoPlano.jsf");
			contextResq.execute("PF('dlgAlteraPlano').show();");

		} catch (IOException e) {
			e.printStackTrace();
		}
	}


	/*
	 * ===================================== PICKER VIEW===========================================================
	 * ============================================================================================================
	 */

	public DualListModel<RestauranteFilialWeb> getEmpresaFiliaisL() {

		if(loginObj.getSessao("IDRestaurante") != null){
			if(restFilialSource.size() == 0){
				
				int idRestaurante = (Integer) loginObj.getSessao("IDRestaurante");
				restFilialSource = filialEJB.findFilialByIDMatriz(idRestaurante);
				empresaFiliaisL = new DualListModel<RestauranteFilialWeb>(restFilialSource, restFilialTarget);
			}
		}
		return empresaFiliaisL;
	}

	public void onTransfer(TransferEvent event) {
		StringBuilder builder = new StringBuilder();
		for (Object item : event.getItems()) {
			builder.append(
					((RestauranteFilialWeb) item).getIdRestauranteFilialWeb())
					.append("<br />");
		}
	}

	public void setEmpresaFiliaisL(
			DualListModel<RestauranteFilialWeb> empresaFiliaisL) {
		this.empresaFiliaisL = empresaFiliaisL;
	}

	public List<RestauranteFilialWeb> getRestFilialSource() {
		return restFilialSource;
	}

	public void setRestFilialSource(List<RestauranteFilialWeb> restFilialSource) {
		this.restFilialSource = restFilialSource;
	}

	public List<RestauranteFilialWeb> getRestFilialTarget() {
		return empresaFiliaisL.getTarget();
	}

	public void setRestFilialTarget(List<RestauranteFilialWeb> restFilialTarget) {
		this.restFilialTarget = restFilialTarget;
	}

	/*
	 * ================================== METHOD GET / SET  ================================================ 
	 * - ENTITY :: CONTRATOWEB / PLANOSY 
	 * - FACADE ::
	 * ==========================================================================================================
	 */

	public String getMsgPlanoVencendo() {
		return msgPlanoVencendo;
	}

	public void setMsgPlanoVencendo(String msgPlanoVencendo) {
		this.msgPlanoVencendo = msgPlanoVencendo;
	}


	public void setStatusRenovacaoDialog(boolean statusRenovacaoDialog) {
		this.statusRenovacaoDialog = statusRenovacaoDialog;
	}

	public ContratoWeb getContratoObj() {
		return contratoObj;
	}

	public void setContratoObj(ContratoWeb contratoObj) {
		this.contratoObj = contratoObj;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public ContratoVO getContratoVO() {
		return contratoVO;
	}

	public void setContratoVO(ContratoVO contratoVO) {
		this.contratoVO = contratoVO;
	}

	public RestauranteFilialMB getRestauranteFilialMB() {
		return restauranteFilialMB;
	}

	public void setRestauranteFilialMB(RestauranteFilialMB restauranteFilialMB) {
		this.restauranteFilialMB = restauranteFilialMB;
	}

	public boolean isSkip() {
		return skip;
	}

	public void setSkip(boolean skip) {
		this.skip = skip;
	}

	public String getCartaoCredito() {
		return cartaoCredito;
	}


	public void setCartaoCredito(String cartaoCredito) {
		this.cartaoCredito = cartaoCredito;
	}


	public String getBoleto() {
		return boleto;
	}


	public void setBoleto(String boleto) {
		this.boleto = boleto;
	}


	public FormaPagamentoSy getSelectFormaPagamento() {
		System.out.println("[METHOD][getSelectFormaPagamento()]");
		return selectFormaPagamento;
	}
	
	public void setSelectFormaPagamento(FormaPagamentoSy selectFormaPagamento) {
		System.out.println("[METHOD][setObjFormaPagamentoAlt()]");
		this.selectFormaPagamento = selectFormaPagamento;
	}
	
	
	public FormaPagamentoSy loadDialogConfirmaPagamento(){ 
		System.out.println("[METHOD][loadDialogConfirmaPagamento()]");
	
		System.out.println("[METHOD][setObjFormaPagamentoAlt()]......................."+ selectFormaPagamento.getNomePagamento());
		System.out.println("[METHOD][setObjFormaPagamentoAlt()]......................."+ selectFormaPagamento.getImagem());
		
		if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_VISA) ||
				(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_DINNER)) ||
						(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_CARTAO_MASTER))){

			
			System.out.println("ENTROU AGORA ACESSO JÁ..........................................................");

			setCartaoCredito(selectFormaPagamento.getNomePagamento());
			
			statusCartaoCredito = true;
			statusBoleto = false;
			statusItau = false;
			statusPayPal = false;
		}
		else if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_BOLETO_BANCARIO)){
			statusBoleto = true;
			statusCartaoCredito = false;
			statusItau = false;
			statusPayPal = false;
		}
		else if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_ENTIDADE_PAYPAL)){
			statusPayPal = true;
			statusBoleto = false;
			statusCartaoCredito = false;
			statusItau = false;
		}
		else if(selectFormaPagamento.getNomePagamento().equals(constObj.PAGAMENTO_BANCO_ITAU)){
			statusItau = true;
			statusPayPal = false;
			statusBoleto = false;
			statusCartaoCredito = false;
		}
		
		System.out.println("1 PAGAMENTOOOOOOOOOOOOOOOOOOOOOOOOOOOO    "+ selectFormaPagamento.getNomePagamento());
		System.out.println("2 PAGAMENTOOOOOOOOOOOOOOOOOOOOOOOOOOOO    "+ contratoVO.getFormaPagamento());
		System.out.println("3 PAGAMENTOOOOOOOOOOOOOOOOOOOOOOOOOOOO    "+ formaPagVO.getFormaPagamento());
		
		if(!selectFormaPagamento.getNomePagamento().equals(formaPagVO.getFormaPagamento())){
			int idContratoPagamento = formaPagVO.getIdContratoPagamentoWeb(); 
			formaPagVO = new FormaPagamentoVO();
			formaPagVO.setIdContratoPagamentoWeb(idContratoPagamento);
		}
		
		return selectFormaPagamento;
	}





	public boolean isStatusCartaoCredito() {
		return statusCartaoCredito;
	}


	public void setStatusCartaoCredito(boolean statusCartaoCredito) {
		this.statusCartaoCredito = statusCartaoCredito;
	}


	public boolean isStatusBoleto() {
		return statusBoleto;
	}


	public void setStatusBoleto(boolean statusBoleto) {
		this.statusBoleto = statusBoleto;
	}


	public boolean isStatusItau() {
		return statusItau;
	}


	public void setStatusItau(boolean statusItau) {
		this.statusItau = statusItau;
	}


	public boolean isStatusPayPal() {
		return statusPayPal;
	}


	public void setStatusPayPal(boolean statusPayPal) {
		this.statusPayPal = statusPayPal;
	}


	public int getNumeroSegurancaCartao() {
		return numeroSegurancaCartao;
	}


	public void setNumeroSegurancaCartao(int numeroSegurancaCartao) {
		this.numeroSegurancaCartao = numeroSegurancaCartao;
	}


	public int getMes() {
		return mes;
	}


	public void setMes(int mes) {
		this.mes = mes;
	}


	public int getAno() {
		return ano;
	}


	public void setAno(int ano) {
		this.ano = ano;
	}


	public PlanoVO getPlanoVO() {
		return planoVO;
	}


	public void setPlanoVO(PlanoVO planoVO) {
		System.out.println("setPlanoVO +++++++++++++++++++++++++++++++++++++++++++++=============++++++ "+ planoVO.getValor());
		
		this.planoVO = planoVO;
	}


	public long getDesconto() {
		System.out.println("[METHOD][getDesconto]");
		desconto = loadDescontoPlano();
		return desconto;
	}


	public void setDesconto(int desconto) {
		this.desconto = desconto;
	}

	public String getCartaoCreditoImg() {
		
		if(selectFormaPagamento.getImagem() == null){
			cartaoCreditoImg = "visa";
			return cartaoCreditoImg;
		}
		else{
			cartaoCreditoImg = selectFormaPagamento.getImagem();
			return cartaoCreditoImg;
		}
	}


	public void setCartaoCreditoImg(String cartaoCreditoImg) {
		this.cartaoCreditoImg = cartaoCreditoImg;
	}


/* VALORES FORmato */
	
	public String getDescontoFormatadoRenovacao() {
		long descontoI = getDesconto();
		
		
		if(contratoCreditoPagamentoL.size() == 0){
			descontoFormatadoRenovacao = Long.toString(descontoI) +""+"%";
		}
		else{
			descontoFormatadoRenovacao = Long.toString(descontoI);
		}
		
		formaPagVO.setDesconto(descontoI);
		return descontoFormatadoRenovacao;
	}


	public void setDescontoFormatadoRenovacao(String descontoFormatadoRenovacao) {
		this.descontoFormatadoRenovacao = descontoFormatadoRenovacao;
	}

	public String getDescontoFormatadoTrocaPlano() {
		DecimalFormat df = new DecimalFormat("0.00");
		long descontoI = getDesconto();
		formaPagVO.setDesconto(descontoI);
		float valorDesconto = descontoI;
		descontoFormatadoTrocaPlano = "R$ "+ df.format(valorDesconto); 
		return descontoFormatadoTrocaPlano;
	}


	public void setDescontoFormatadoTrocaPlano(String descontoFormatadoTrocaPlano) {
		this.descontoFormatadoTrocaPlano = descontoFormatadoTrocaPlano;
	}


	public String getTotalPagamentoFormatado() {
		if(selectPlanoVO != null){
			System.out.println("[METHOD][getTotalPagamentoFormatado]");
			double valor = 0; 
			
			if(statusPagamentoRenovacaoPlano == true){
				valor = contratoService.calculaValorTotalRenovacao(selectPlanoVO.getValor(), desconto);
			}
			else if(statusPagamentoNovoPlano == true){
				valor = contratoService.calculaValorTotalTrocaPlano(selectPlanoVO.getValor(), desconto, 1);
			}
			else if(statusPagamentoAtrasoPlano == true){
				valor = selectContratoPagamento.getValorPagamento();
			}
			totalPagamentoFormatado = constObj.MOEDAR$ +" "+ contratoService.converterDoubleString(valor);
			formaPagVO.setValorTotal(valor);
		}
		return totalPagamentoFormatado;
	}
	
	
	public void setTotalPagamentoFormatado(String totalPagamentoFormatado) {
		this.totalPagamentoFormatado = totalPagamentoFormatado;
	}


	public String getValorPlanoFormatado() {
		valorPlanoFormatado = "";
		// RENOVAÇÃO CONTRATO
		if(selectPlanoVO != null){
			System.out.println("[METHOD][getValorPlanoFormatado]..........................................................  "+ selectPlanoVO.getValor());
			formaPagVO.setValorPlano(selectPlanoVO.getValor());
			valorPlanoFormatado = "R$ " + contratoService.converterDoubleString(selectPlanoVO.getValor());
		}
		// PAGAMENTO PARCELA EM ATRASO
		else{
			System.out.println("[METHOD][getValorPlanoFormatado]..........................................................  "+ formaPagVO.getValorPagamento());
			valorPlanoFormatado = "R$ " + contratoService.converterDoubleString(selectContratoPagamento.getValorPagamento());
		}
		return valorPlanoFormatado;
	}

/***********************************************************************************************************************************************
 *  METHOD: BLOCO CODIGO REFERENCIADO NO .XHTML PARA DATA TABLE 
 *  EDIT CELL DATA-TABLE
 *   
 ***********************************************************************************************************************************************/
	
	   public void onRowEdit(RowEditEvent event) {
		   
		  String restaurante = ((RestauranteVO) event.getObject()).getNomeFantasia();
		  FacesMessage msg = new FacesMessage("Restaurante Filial Cancelado do Contrato", restaurante);
	      FacesContext.getCurrentInstance().addMessage(null, msg);
	    }
	     
	    public void onRowCancel(RowEditEvent event) {
		  String restaurante = ((RestauranteVO) event.getObject()).getNomeFantasia();
		  FacesMessage msg = new FacesMessage("Cancelado Aleração Status", restaurante);
		  FacesContext.getCurrentInstance().addMessage(null, msg);
	    }
	     
	    public void onCellEdit(CellEditEvent event) {
	        Object oldValue = event.getOldValue();
	        Object newValue = event.getNewValue();
	         
	        if(newValue != null && !newValue.equals(oldValue)) {
	            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
	            FacesContext.getCurrentInstance().addMessage(null, msg);
	        }
	    }
	
/***********************************************************************************************************************************************
*   
***********************************************************************************************************************************************/
	
	
	
	
	
	
	
	
	
	

	public void setValorPlanoFormatado(String valorPlanoFormatado) {
		this.valorPlanoFormatado = valorPlanoFormatado;
	}


	public ParcelaPagamentoTO getParcelaPagSelect() {
		return parcelaPagSelect;
	}


	public void setParcelaPagSelect(ParcelaPagamentoTO parcelaPagSelect) {
		this.parcelaPagSelect = parcelaPagSelect;
	}


	public FormaPagamentoVO getFormaPagVO() {
		return formaPagVO;
	}


	public void setFormaPagVO(FormaPagamentoVO formaPagVO) {
		System.out.println("[METHOD][setFormaPagVO >>>.......>>>>>>>>>>>>>>>>>>>>>>>>>...........<<<<<<<<<<<<<<<<<<<<<<<<<<<<<]");
		formaPagDiferenteVO = formaPagVO;
		this.formaPagVO = formaPagVO;
	}


	public void planoSubmitVO() {
		System.out.println("TESTE");
	}
	
	public PlanoVO getSelectPlanoVO() {
		return selectPlanoVO;
	}


	public void setSelectPlanoVO(PlanoVO selectPlanoVO) {
		
		System.out.println("[ 1234567890000 ]........++++++++++++++++++++++++++++++++++++++..........."+ selectPlanoVO.getValor());
		
		this.selectPlanoVO = selectPlanoVO;
	}


	public boolean isStatusErroCampoVazio() {
		return statusErroCampoVazio;
	}


	public void setStatusErroCampoVazio(boolean statusErroCampoVazio) {
		this.statusErroCampoVazio = statusErroCampoVazio;
	}


	public int getNumeroParcelaPagamento() {
		return numeroParcelaPagamento;
	}


	public void setNumeroParcelaPagamento(int numeroParcelaPagamento) {
		this.numeroParcelaPagamento = numeroParcelaPagamento;
	}


//	public AcessoMB getAcessoMB() {
//		return acessoMB;
//	}
//
//
//	public void setAcessoMB(AcessoMB acessoMB) {
//		this.acessoMB = acessoMB;
//	}


	public boolean isStatusRenovacaoOK() {
		return statusRenovacaoOK;
	}


	public void setStatusRenovacaoOK(boolean statusRenovacaoOK) {
		this.statusRenovacaoOK = statusRenovacaoOK;
	}


	public boolean isStatusRenovacaoError() {
		return statusRenovacaoError;
	}


	public void setStatusRenovacaoError(boolean statusRenovacaoError) {
		this.statusRenovacaoError = statusRenovacaoError;
	}


	public boolean isStatusError() {
		return statusError;
	}


	public void setStatusError(boolean statusError) {
		this.statusError = statusError;
	}


	public List<ContratoWeb> getContratoL() {
		if(contratoL.size() == 0){
			loadDadosContrato();
		}
		return contratoL;
	}


	public void setContratoL(List<ContratoWeb> contratoL) {
		this.contratoL = contratoL;
	}

	
/*********************************************************************************************************************************************
* Method: LOAD DADOS CONTRATO SEGMENTADO POR: DADOS Pagamento / DADOS RESTAURANTES ASSOCIADOS AO CONTRATO
* 
********************************************************************************************************************************************/
	
	public List<ContratoWeb> loadDadosContrato() {
		contratoVO = new ContratoVO();
		planoVO = new PlanoVO();
		int idRestaurante = (Integer) loginOjb.getSessao("IDSede");
		System.out.println("[METHOD][loadDadosContrato]............................."	+ idRestaurante);
		contratoL = new ArrayList<ContratoWeb>();

		contRestFilialL = new HashSet<ContratoRestaurantesWeb>(); 
		pgmContratoRestauranteL = new HashSet<ContratoPagamentoWeb>(); 
		
		contratoL = contratoEJB.preparaListaContratoPorIDRestaurante(idRestaurante);

		for (ContratoWeb obj : contratoL) {
			loginOjb.gravarSessao("NumeroContrato", obj.getNumeroContrato());
			loginOjb.gravarSessao("IDPlano",obj.getPlanoSy().getIdPlanoSys());
			loginOjb.gravarSessao("QtdeRestaurantePlano",obj.getPlanoSy().getBenQtdeFilial());
			loginOjb.gravarSessao("QtdeCardapioPlano",obj.getPlanoSy().getBenQtdeCardapio());
			loginOjb.gravarSessao("ValorPlano",obj.getPlanoSy().getValor());
			loginOjb.gravarSessao("PeriodoPlano",obj.getPlanoSy().getBenPeriodoAssinatura());
			
			
			contratoVO.setDataTermino(obj.getDataTermino());
			contratoVO.setIdContratoWeb(obj.getIdContratoWeb());
			contratoVO.setDataAlt(obj.getDataAlt());
			contratoVO.setDataContratacao(obj.getDataContratacao());
			contratoVO.setDataTermino(obj.getDataTermino());
			contratoVO.setNomeResponsavel(obj.getNomeResponsavel());
			contratoVO.setContratoEmNome(obj.getContratoEmNome());
			contratoVO.setNumeroContrato(obj.getNumeroContrato());
			contratoVO.setInsEstadual(obj.getInsEstadual());
			contratoVO.setStatusContrato(obj.getStatus());
			contratoVO.setCpf(obj.getCpf());
			contratoVO.setCNPJ(obj.getCnpj());
			
			planoVO.setNomePlano(obj.getPlanoSy().getNomePlano());
			
			if(obj.getPlanoSy().getBenQtdeCardapio() == constObj.SUPORTE_CAD_CARDAPIO_SIM){
				planoVO.setBeneficioSuporteCadCardapioS(constObj.BEN_SUPORTE_CAD_CARDAPIO_SIM);
			}
			else if(obj.getPlanoSy().getBenQtdeCardapio() == constObj.SUPORTE_CAD_CARDAPIO_NAO){
				planoVO.setBeneficioSuporteCadCardapioS(constObj.BEN_SUPORTE_CAD_CARDAPIO_NAO);
			}
			planoVO.setBenQtdeCardapio(obj.getPlanoSy().getBenQtdeCardapio());
			planoVO.setBenQtdeFilial(obj.getPlanoSy().getBenQtdeFilial());
			planoVO.setBenPeriodoAssinatura(obj.getPlanoSy().getBenPeriodoAssinatura());
			planoVO.setBenSuporteCadCadastro(obj.getPlanoSy().getBenSuporteCadCardapio());
			
			
			String benQtdeCardapioS = Integer.toString(planoVO.getBenQtdeCardapio())+ " "+ constObj.BENEF_CARDAPIOS;
			planoVO.setBeneficioQtdeCardapioS(benQtdeCardapioS);

			String benQtdeFilialS = Integer.toString(planoVO.getBenQtdeFilial())+ " "+ constObj.BENEF_FILIAIS;
			planoVO.setBeneficioQtdeFilialS(benQtdeFilialS);
			planoVO.setValor(obj.getPlanoSy().getValor());
			System.out.println();

			if(planoVO.getBenPeriodoAssinatura() == 1){
				String benPeriodoAssinaturaS = Integer.toString(planoVO.getBenPeriodoAssinatura())+ " "+ constObj.BENEF_ASSINATURA_MES;
				planoVO.setBeneficioPeriodoAssinaturaS(benPeriodoAssinaturaS);
			}
			else{
				String benPeriodoAssinaturaS = Integer.toString(planoVO.getBenPeriodoAssinatura())+ " "+ constObj.BENEF_ASSINATURA_MESES;
				planoVO.setBeneficioPeriodoAssinaturaS(benPeriodoAssinaturaS);
			}

			if(planoVO.getBenSuporteCadCadastro() == constObj.BEN_PLANOSUPORTACAD_CARDAPIO_SIM){
				planoVO.setBeneficioSuporteCadCardapioS(constObj.BENEF_SUPORTECARDAPIO_TRUE);
			}
			else{
				planoVO.setBeneficioSuporteCadCardapioS(constObj.BENEF_SUPORTECARDAPIO_FALSE);
			}
			contRestFilialL.addAll(obj.getContratoRestaurantesWebs());
			pgmContratoRestauranteL.addAll(obj.getContratoPagamentoWebs());
			contratoCreditoPagamentoL.addAll(obj.getContratoCreditoPagamentoWebs());
		}

		/* Entity --- ContratoRestaurantesWeb 
		 * LOAD LIST PK ID*/
		for(ContratoRestaurantesWeb contratoRestObj : contRestFilialL){
			restauranteContratoOriginalL.add(contratoRestObj.getIdContratoRestauranteWeb());
		}
		

		
		/* Entity --- ContratoPagamentoWeb 
		 * LOAD LIST PK ID*/
		for(ContratoPagamentoWeb contratoPagObj : pgmContratoRestauranteL){
			pagamentoContratoOriginalL.add(contratoPagObj.getIdContratoPagamentoWeb());
			/*
			System.out.println("DESCONTO -1 .................................."+ statusPagamentoBoletoVista);
			System.out.println("DESCONTO -2 .................................."+ statusPagamentoCreditoVista);
			System.out.println("DESCONTO -3 .................................."+ statusPagamentoTransfVista);

			
			if(contratoPagObj.getFormaPagamentoSy().getTipoPagamento() == constObj.PAGAMENTO_TIPO_BOLETO){
				System.out.println("DESCONTO -1 .................................."+ statusPagamentoBoletoVista);
				
				statusPagamentoBoletoVista = true;
			}
			else if(contratoPagObj.getFormaPagamentoSy().getTipoPagamento() == constObj.PAGAMENTO_TIPO_CARTAOCREDITO){
				System.out.println("DESCONTO -2 .................................."+ statusPagamentoCreditoVista);
				statusPagamentoCreditoVista = true;
			}
			else if(contratoPagObj.getFormaPagamentoSy().getTipoPagamento() == constObj.PAGAMENTO_TIPO_TEF){
				System.out.println("DESCONTO -3 .................................."+ statusPagamentoTransfVista);
				statusPagamentoTransfVista = true;
			}*/
		}
		return contratoL;
	}

	
	/*
	public List<ContratoPagamentoWeb> getPagamentoContratoL() {
		
		System.out.println("[METOHOD][getPagamentoContratoL]");
		ContratoPagamentoWeb formaPagObj = null;
		
		// Restaurante Filial
		if(contratoL.size() > 0){
			for (ContratoPagamentoWeb pagamentoObj : pgmContratoRestauranteL) {
				formaPagObj = new ContratoPagamentoWeb();
				
				pagamentoContratoOriginalL.add(pagamentoObj.getIdContratoPagamentoWeb());

				formaPagObj.setTitulaPagamento(pagamentoObj.getTitularPagamento());
				formaPagObj.setIdContratoPagamentoWeb(pagamentoObj.getIdContratoPagamentoWeb());
				formaPagObj.setDataVencimento(pagamentoObj.getDataVencimento());
				formaPagObj.setDataPagamento(pagamentoObj.getDataPagamento());
				formaPagObj.setDataPagamento(pagamentoObj.getDataPagamento());
				formaPagObj.setValorPagamento(pagamentoObj.getValorPagamento());
				formaPagObj.setCodeTransacao(pagamentoObj.getCodeTransacao());
				formaPagObj.setFormaPagamento(pagamentoObj.getFormaPagamentoSy().getNomePagamento());
				formaPagObj.setContratoVO(contratoVO);
				formaPagObj.setParcela(pagamentoObj.getParcela());
				
				if(pagamentoObj.getStatus() == constObj.PAGAMENTO_PAGO_SUCESSO){
					formaPagObj.setStatusPagamento(constObj.PAGAMENTO_PAGO_SUCESSO);
					formaPagObj.setStatusDescPagamento(constObj.PAGAMENTO_PAGO_SUCESSO_S);
				}
				else if(pagamentoObj.getStatus() == constObj.PAGAMENTO_APAGAR){
					formaPagObj.setStatusPagamento(constObj.PAGAMENTO_APAGAR);
					formaPagObj.setStatusDescPagamento(constObj.PAGAMENTO_APAGAR_S);
				}
				else if(pagamentoObj.getStatus() == constObj.PAGAMENTO_NAO_PAGO){
					formaPagObj.setStatusPagamento(constObj.PAGAMENTO_NAO_PAGO);
					formaPagObj.setStatusDescPagamento(constObj.PAGAMENTO_NAO_PAGO_S);
				}
				else if(pagamentoObj.getStatus() == constObj.PAGAMENTO_NAO_PAGO_ERRO){
					formaPagObj.setStatusPagamento(constObj.PAGAMENTO_NAO_PAGO_ERRO);
					formaPagObj.setStatusDescPagamento(constObj.PAGAMENTO_NAO_PAGO_ERRO_S);
				}
				pagamentoContratoL.add(formaPagObj);
				System.out.println("[METOHOD][END][getPagamentoContratoL]  "+ pagamentoContratoL.size());
			}
		}
		return pagamentoContratoL;
	}
*/

	public void setPagamentoContratoL(List<ContratoPagamentoWeb> pagamentoContratoL) {
		this.pagamentoContratoL = pagamentoContratoL;
	}

	public List<RestauranteVO> getRestaurantesContratoL() {
		RestauranteFilialWeb filialObj = new RestauranteFilialWeb();
		
		Long qtdeCardBuffet, qtdeCardLaCarte, qtdeCardSelfService, qtdeCardInfantil, qtdeCardEspecialidade, totalGeralCardapio;
		int idRestaurante = (Integer) loginObj.getSessao("IDSede");
		RestauranteVO restauranteObj = null;
		
		restaurantesContratoL = new ArrayList<RestauranteVO>();

		// Restaurante Filial
		if(contratoL.size() > 0){
			for (ContratoRestaurantesWeb objFilial : contRestFilialL) {
				restauranteObj = new RestauranteVO();
				
				restauranteContratoOriginalL.add(objFilial.getIdContratoRestauranteWeb());
				
				restauranteObj.setIdRestaurante(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb());
				restauranteObj.setNomeFantasia(objFilial.getRestauranteFilialWeb().getRestauranteFilialJuridicoWeb().getNomeFantasiaFilial());

				System.out.println("RESTAURANTE FILIAL.............................."+ 	objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb());
				System.out.println("RESTAURANTE SEDE .............................."+ 	objFilial.getRestauranteSedeWeb().getIdRestauranteSedeWeb());
				
				restauranteObj.setStatusCode(objFilial.getStatus());
				restauranteObj.setIdContrato(objFilial.getContratoWeb().getIdContratoWeb());
				restauranteObj.setIdContratoRestaurante(objFilial.getIdContratoRestauranteWeb());
				
				if(objFilial.getStatus() == constObj.ATIVO){
					restauranteObj.setStatus(constObj.STATUS_RESTAURANTE_CONTRATO_ATIVO);
				}
				else if(objFilial.getStatus() == constObj.INATIVO){
					restauranteObj.setStatus(constObj.STATUS_RESTAURANTE_CONTRATO_CANCELADO);
				}
 
				//RESTAURANTE FILIAL
				if(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb() != 0){

					restauranteObj.setTipo(constObj.Filial);
					
					//CARDAPIO G1
					qtdeCardBuffet = cardapioG1EJB.buscaQtdeCardapioBuffetAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Filial);
					qtdeCardSelfService = cardapioG1EJB.buscaQtdeCardapioBuffetAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(),constObj.Filial);
	
					// CARDAPIO G2
					qtdeCardLaCarte = cardapioG2EJB.buscaQtdeCardapioLaCarteAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Filial);
					qtdeCardInfantil = cardapioG2EJB.buscaQtdeCardapioInfantilAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Filial);
					
					// CARDAPIO G3
					qtdeCardEspecialidade = cardapioG3EJB.buscaQtdeCardapioEspecialidadeAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Filial);
				}
				
				//RESTAURANTE SEDE
				else{
					restauranteObj.setTipo(constObj.Sede);

					//CARDAPIO G1
					qtdeCardBuffet = cardapioG1EJB.buscaQtdeCardapioBuffetAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Sede);
					qtdeCardSelfService = cardapioG1EJB.buscaQtdeCardapioBuffetAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Sede);
		
					// CARDAPIO G2
					qtdeCardLaCarte = cardapioG2EJB.buscaQtdeCardapioLaCarteAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Sede);
					qtdeCardInfantil = cardapioG2EJB.buscaQtdeCardapioInfantilAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Sede);
					
					// CARDAPIO G3
					qtdeCardEspecialidade = cardapioG3EJB.buscaQtdeCardapioEspecialidadeAtivo(objFilial.getRestauranteFilialWeb().getIdRestauranteFilialWeb(), constObj.Sede);
				}				
				// CARDAPIO TOTAL GERAL
				totalGeralCardapio = qtdeCardBuffet + qtdeCardSelfService + qtdeCardLaCarte + qtdeCardInfantil + qtdeCardEspecialidade;
				restauranteObj.setTotalGeralCardapios(totalGeralCardapio);
				
				restauranteObj.setQtdeCardBuffet(qtdeCardBuffet);
				restauranteObj.setQtdeCardEspecialidade(qtdeCardEspecialidade);
				restauranteObj.setQtdeCardInfantil(qtdeCardInfantil);
				restauranteObj.setQtdeCardLaCarte(qtdeCardLaCarte);
				restauranteObj.setQtdeCardSelfService(qtdeCardSelfService);

				restaurantesContratoL.add(restauranteObj);
				System.out.println("TESTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.............................."+ 	restaurantesContratoL.size() );

			}
			
		}
		return restaurantesContratoL;
	}


	public void setRestaurantesContratoL(List<RestauranteVO> restaurantesContratoL) {
		this.restaurantesContratoL = restaurantesContratoL;
	}

	
/*********************************************************************************************************************************************
 ********************************************************************************************************************************************/
	

	public String getStatusFilialPlano() {
		return statusFilialPlano;
	}


	public void setStatusFilialPlano(String statusFilialPlano) {
		this.statusFilialPlano = statusFilialPlano;
	}


	public boolean isStatusEditar() {
		return statusEditar;
	}


	public void setStatusEditar(boolean statusEditar) {
		this.statusEditar = statusEditar;
	}


	public boolean isStatusBtnAlterar() {
		return statusBtnAlterar;
	}


	public void setStatusBtnAlterar(boolean statusBtnAlterar) {
		this.statusBtnAlterar = statusBtnAlterar;
	}
	
	public void editarCampos(){
		System.out.println("editarCampos()");
		
	}


	public CardapioG1Facade getCardapioG1EJB() {
		return cardapioG1EJB;
	}


	public void setCardapioG1EJB(CardapioG1Facade cardapioG1EJB) {
		this.cardapioG1EJB = cardapioG1EJB;
	}


	public CardapioG2Facade getCardapioG2EJB() {
		return cardapioG2EJB;
	}


	public void setCardapioG2EJB(CardapioG2Facade cardapioG2EJB) {
		this.cardapioG2EJB = cardapioG2EJB;
	}


	public CardapioG3Facade getCardapioG3EJB() {
		return cardapioG3EJB;
	}


	public void setCardapioG3EJB(CardapioG3Facade cardapioG3EJB) {
		this.cardapioG3EJB = cardapioG3EJB;
	}


	public CardapiosConsultaMB getCardapiosConsultaMB() {
		return cardapiosConsultaMB;
	}


	public void setCardapiosConsultaMB(CardapiosConsultaMB cardapiosConsultaMB) {
		this.cardapiosConsultaMB = cardapiosConsultaMB;
	}


	public RestauranteVO getRestaurantesContratoSelect() {
		return restaurantesContratoSelect;
	}


	public void setRestaurantesContratoSelect(
			RestauranteVO restaurantesContratoSelect) {
		this.restaurantesContratoSelect = restaurantesContratoSelect;
	}


	public String getATIVOs() {
		return ATIVOs;
	}


	public void setATIVOs(String aTIVOs) {
		ATIVOs = aTIVOs;
	}


	public String getINATIVOs() {
		return INATIVOs;
	}


	public void setINATIVOs(String iNATIVOs) {
		INATIVOs = iNATIVOs;
	}


	public String getDisplayDetalhesRestaurante() {
		if(restaurantesContratoSelect != null){
			displayDetalhesRestaurante = restaurantesContratoSelect.getNomeFantasia();
		}
 		return displayDetalhesRestaurante;
	}


	public void setDisplayDetalhesRestaurante(String displayDetalhesRestaurante) {
		this.displayDetalhesRestaurante = displayDetalhesRestaurante;
	}


	public FormaPagamentoVO getFormaPagDiferenteVO() {
		return formaPagDiferenteVO;
	}


	public void setFormaPagDiferenteVO(FormaPagamentoVO formaPagDiferenteVO) {
		this.formaPagDiferenteVO = formaPagDiferenteVO;
	}


	public ContratoPagamentoWeb getSelectContratoPagamento() {
		return selectContratoPagamento;
	}


	public void setSelectContratoPagamento(ContratoPagamentoWeb selectContratoPagamento) {
		System.out.println("TESTESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 11111111111"+ selectContratoPagamento.getTitularPagamento());
		this.selectContratoPagamento = selectContratoPagamento;
	}


	public List<Integer> getPagamentoContratoOriginalL() {
		return pagamentoContratoOriginalL;
	}


	public void setPagamentoContratoOriginalL(
			List<Integer> pagamentoContratoOriginalL) {
		this.pagamentoContratoOriginalL = pagamentoContratoOriginalL;
	}


	public List<Integer> getRestauranteContratoOriginalL() {
		return restauranteContratoOriginalL;
	}


	public void setRestauranteContratoOriginalL(
			List<Integer> restauranteContratoOriginalL) {
		this.restauranteContratoOriginalL = restauranteContratoOriginalL;
	}


	public Set<ContratoPagamentoWeb> getPgmContratoRestauranteL() {
		return pgmContratoRestauranteL;
	}


	public void setPgmContratoRestauranteL(
			Set<ContratoPagamentoWeb> pgmContratoRestauranteL) {
		this.pgmContratoRestauranteL = pgmContratoRestauranteL;
	}


	public boolean isStatusPagamentoNovoPlano() {
		return statusPagamentoNovoPlano;
	}


	public void setStatusPagamentoNovoPlano(boolean statusPagamentoNovoPlano) {
		statusPagamentoAtrasoPlano = false;
		this.statusPagamentoNovoPlano = statusPagamentoNovoPlano;
	}


	public boolean isStatusPagamentoAtrasoPlano() {
		return statusPagamentoAtrasoPlano;
	}


	public void setStatusPagamentoAtrasoPlano(boolean statusPagamentoAtrasoPlano) {
		statusPagamentoNovoPlano = false;
		this.statusPagamentoAtrasoPlano = statusPagamentoAtrasoPlano;
	}


	public boolean isStatusPagamentoRenovacaoPlano() {
		return statusPagamentoRenovacaoPlano;
	}


	public void setStatusPagamentoRenovacaoPlano(
			boolean statusPagamentoRenovacaoPlano) {
		this.statusPagamentoRenovacaoPlano = statusPagamentoRenovacaoPlano;
	}


	public String getMsgUpDownGradePlano() {
		return msgUpDownGradePlano;
	}


	public void setMsgUpDownGradePlano(String msgUpDownGradePlano) {
		this.msgUpDownGradePlano = msgUpDownGradePlano;
	}

	
	public List<ContratoCreditoPagamentoWeb> getContratoCreditoPagamentoL() {
		return contratoCreditoPagamentoL;
	}


	public void setContratoCreditoPagamentoL(List<ContratoCreditoPagamentoWeb> contratoCreditoPagamentoL) {
		this.contratoCreditoPagamentoL = contratoCreditoPagamentoL;
	}


	public String getDownUpGrade() {
		return downUpGrade;
	}


	public void setDownUpGrade(String downUpGrade) {
		this.downUpGrade = downUpGrade;
	}



	public RestauranteVO getRestauranteSelect() {
		System.out.println("getRestauranteSelect()..................."+ restauranteSelect.getNomeFantasia());
		return restauranteSelect;
	}


	public void setRestauranteSelect(RestauranteVO restauranteSelect) {
		System.out.println("SETRestauranteSelect()..............1111111111111111111111111111112222222222222222222....."+ restauranteSelect.getNomeFantasia());

		this.restauranteSelect = restauranteSelect;
	}


	public boolean isStatusPagamentoTrocaPlano() {
		return statusPagamentoTrocaPlano;
	}


	public void setStatusPagamentoTrocaPlano(boolean statusPagamentoTrocaPlano) {
		this.statusPagamentoTrocaPlano = statusPagamentoTrocaPlano;
	}


	public boolean isDownFilial() {
		return downFilial;
	}


	public void setDownFilial(boolean downFilial) {
		this.downFilial = downFilial;
	}


	public boolean isDownCardapio() {
		return downCardapio;
	}


	public void setDownCardapio(boolean downCardapio) {
		this.downCardapio = downCardapio;
	}


	public boolean isDownFilialCard() {
		return downFilialCard;
	}


	public void setDownFilialCard(boolean downFilialCard) {
		this.downFilialCard = downFilialCard;
	}


	public boolean isDowngrade() {
		return downgrade;
	}


	public void setDowngrade(boolean downgrade) {
		this.downgrade = downgrade;
	}


	public boolean isUpgrade() {
		return upgrade;
	}


	public void setUpgrade(boolean upgrade) {
		this.upgrade = upgrade;
	}



	public int getIdRestauranteTeste() {
		return idRestauranteTeste;
	}


	public void setIdRestauranteTeste(int idRestauranteTeste) {
		this.idRestauranteTeste = idRestauranteTeste;
	}


}
